package com.Spring.Service;

import com.Spring.Model.Alumno;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.bean.SessionScoped;
import javax.inject.Named;
import com.Spring.DAO.AlumnoDAO;
import com.Spring.DAO.GrupoDAO;
import com.Spring.DAO.InscripcionDAO;
import com.Spring.Model.Grupo;
import com.Spring.Model.GrupoPK;
import com.Spring.Model.Inscripcion;
// java.util.Iterator;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.FacesContext;
//import javax.management.Query;


@ManagedBean
@Named(value ="Service")
@SessionScoped
public class Service implements Serializable {
    @EJB
    private Alumno albd;
    private Grupo grbd,grbd2,gr;
    private Inscripcion ins;
    private InscripcionDAO dins;
    private GrupoDAO dg;
    private AlumnoDAO da;
    private int cuenta,asignatura,grupo;
    private String pass;
    private List<Inscripcion> lista;
    private HtmlDataTable datatable;
    private Alumno alum;
    private GrupoPK gpk;
       @PostConstruct
    public void init()
    {
        da = new AlumnoDAO();
        dg = new GrupoDAO();
        dins= new InscripcionDAO();
        ins=new Inscripcion();
        lista=dins.busca(cuenta);
        alum=new Alumno();
        gr=new Grupo();
        gpk=new GrupoPK();
    }
    
    public String validar() throws Exception{ //Inicia Metodo para Validar los datos de Acceso al Usuario
       ProcesosAlumno proceso = new ProcesosAlumno();

       alum.setNoCuenta(cuenta);
       alum.setPasswordAlu(pass);
      // alum.setPasswordAlu(pass);
       String aux=proceso.validar(alum);
       lista=dins.busca(alum.getNoCuenta());
       if("Exito".equals(aux))
            return "altas.xhtml";
        else {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error", aux));  
         return "";
       } 
                
       }//Termina Metodo para Validar los datos de Acceso al Usuario
    
    public String Alta () throws Exception{      //Inicia Metodo para dar de Alta al Usuario
      ProcesosAlumno proceso=new ProcesosAlumno();
      String aux=proceso.Alta(alum,gpk);
      lista=dins.busca(alum.getNoCuenta());
      if("Exito".equals(aux))
            return "";
        else {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error", aux));  
         return "";
       }
  } //Termina Metodo para dar de Alta al Usuario
  
  public String Baja () throws Exception{   //Inicia Metodo para dar de Baja al Usuario
     ProcesosAlumno proceso=new ProcesosAlumno();
     String aux=proceso.Baja(alum, gpk);
     lista=dins.busca(alum.getNoCuenta());
      if("Exito".equals(aux))
            return "";
        else {
       FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error", aux));  
         return "";
       }
    
         

  }//Termina Metodo para dar de Baja al Usuario
  
    public List<Inscripcion> ConsultaInscripcion () throws Exception{ //Inicia Metodo para Consultar una Iscripcion del Usuario
    return dins.busca(cuenta); //Se manda el No. de cuenta a Inscripcion para buscar en las Inscripciones realizadas
     }
     public String Cambio () throws Exception{ //Inicia Metodo para Cambiar una Asignatura del Usuario
     ProcesosAlumno proceso=new ProcesosAlumno();
     if(proceso.Cambio(alum, gpk)=="Exito")
        return "";//Termina Metodo para Cambiar una Asignatura del Usuario...Te cambiaste de Grupo ;)
     else
         return "";
}

    public Alumno getAlbd() {return albd;}
    public void setAlbd(Alumno albd){this.albd = albd;}
    public int getAsignatura() {return asignatura;}
    public void setAsignatura(int asignatura) {this.asignatura = asignatura;}
    public int getCuenta() {return cuenta;}
    public void setCuenta(int cuenta) { this.cuenta = cuenta; }
    public AlumnoDAO getDa() { return da;}
    public void setDa(AlumnoDAO da) {this.da = da;}
    public GrupoDAO getDg() {return dg;}
    public void setDg(GrupoDAO dg) {this.dg = dg;}
    public InscripcionDAO getDins() {return dins;}
    public void setDins(InscripcionDAO dins) {this.dins = dins;}
    public Grupo getGrbd() {return grbd;}
    public void setGrbd(Grupo grbd) {this.grbd = grbd;}
    public int getGrupo() {return grupo;}
    public void setGrupo(int grupo) {this.grupo = grupo;}
    public Inscripcion getIns() {return ins;}
    public void setIns(Inscripcion ins) {this.ins = ins;}
    public String getPass() {return pass;}
    public void setPass(String pass) {this.pass = pass;}
    public Grupo getGrbd2() {return grbd2;}
    public HtmlDataTable getDatatable() {return datatable;}
    public void setDatatable(HtmlDataTable datatable) {this.datatable = datatable;}

    public Alumno getAlum() {
        return alum;
    }

    public void setAlum(Alumno alum) {
        this.alum = alum;
    }

    public GrupoPK getGpk() {
        return gpk;
    }

    public void setGpk(GrupoPK gpk) {
        this.gpk = gpk;
    }

    public Grupo getGr() {
        return gr;
    }

    public void setGr(Grupo gr) {
        this.gr = gr;
    }
    
    
    public void setLista(List<Inscripcion> lista) {this.lista = lista;}
    public List<Inscripcion> getLista() {
        return dins.busca(alum.getNoCuenta());}
}